package com.zjq.authoritysystem.service;

import com.zjq.authoritysystem.entity.Permission;
import com.baomidou.mybatisplus.extension.service.IService;
import com.zjq.authoritysystem.vo.RolePermissionVo;
import com.zjq.authoritysystem.vo.query.PermissionQueryVo;

import java.util.List;

/**
 * @deacription: 权限列表业务层
 * @className: PermissionService
 * @author: BetOnMe
 * @since: 2023-09-20 15:43
 * @version: 1.0
 **/
public interface PermissionService extends IService<Permission> {
    /**
     * 根据用户编号查询用户权限列表信息
     *
     * @param userId 用户编号
     * @return 权限列表
     */
    List<Permission> findPermissionsByUserId(Integer userId);

    /**
     * 以树形结构获取菜单权限列表
     * @param permissionQueryVo 菜单权限查询条件
     * @return 菜单权限列表
     */
    List<Permission> listByTreeModel(PermissionQueryVo permissionQueryVo);

    /**
     * 检查菜单权限信息是否含有子元素
     * @param id 菜单权限编号
     * @return 结果
     */
    Boolean checkPermissionHaveChildren(Integer id);

    /**
     * 根据用户编号和角色编号查询菜单权限信息树
     * @param userId 用户编号
     * @param roleId 角色编号
     * @return 菜单权限信息树
     */
    RolePermissionVo findPermissionTree(Integer userId,Integer roleId);
}
